#include "model/Utils.h"
#include <iostream>
#include <string>
#include <sstream>

const std::string Utils::representacionPrivado = "-";
const std::string Utils::representacionProtegido = "#";
const std::string Utils::representacionPublico = "+";

std::map<Visibilidad,std::string> Utils::visivilidadEnumToString = crearVisivilidadEnumToString();

std::map<Visibilidad,std::string> Utils::crearVisivilidadEnumToString(){
    std::map<Visibilidad,std::string> temp;

    temp[PUBLIC] = Utils::representacionPublico;
    temp[PRIVATE] = Utils::representacionPrivado;
    temp[PROTECTED] = Utils::representacionProtegido;

    return temp;
}

std::map<std::string,Visibilidad> Utils::visivilidadStringToEnum = crearVisivilidadStringToEnum();

std::map<std::string,Visibilidad> Utils::crearVisivilidadStringToEnum(){
    std::map<std::string,Visibilidad> temp;

    temp[Utils::representacionPublico] = PUBLIC;
    temp[Utils::representacionPrivado] = PRIVATE;
    temp[Utils::representacionProtegido] = PROTECTED;

    return temp;
}


int Utils::convertToInt (const std::string & cadena){
	int numero;
	std::istringstream buffer(cadena);
	buffer >> numero;
	return numero;
}

unsigned Utils::convertToUnsigned (const std::string & cadena)
{
	unsigned numero;
	std::istringstream buffer(cadena);
	buffer >> numero;
	return numero;
}

std::string Utils::convertToString (int numero)
{
	std::ostringstream buffer;
	buffer << numero;
	return buffer.str();
}
